var obj = {}

/**
 * 参数三
 *  ● value: 值
 *  ● configurable: 是否允许删除该成员，是否允许修改该成员的属性描述符
 *  ● enumerable: 是否允许枚举该成员
 *  ● writable: 是否允许修改该成员的值
 */
Object.defineProperty(obj, 'name', {
  value: '张智琦',
  configurable: false,
  enumerable: false,
  writable: false
})

// value: 值 >>>
console.log(obj.name) // 张智琦
// value: 值 <<<

// configurable: 是否允许删除该成员，是否允许修改该成员的属性描述符 >>>
var res = delete obj.name
console.log(res) // false
/* Object.defineProperty(obj, 'name', {
  configurable: true
}) // TypeError: Cannot redefine property: name */
// configurable: 是否允许删除该成员，是否允许修改该成员的属性描述符 <<<

// enumerable: 是否允许枚举该成员 >>>
console.log(Object.keys(obj)) // []
// enumerable: 是否允许枚举该成员 <<<

// writable: 是否允许修改该成员的值 >>>
obj.name = '张智琦2'
console.log(obj.name) // 张智琦
// writable: 是否允许修改该成员的值 <<<
